GtkBuilder: Support parsing int64/uin64 values
authorMatthias Clasen <mclasen@redhat.com>
Thu, 21 Aug 2014 18:20:28 +0000 (14:20 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 21 Aug 2014 18:22:13 +0000 (14:22 -0400)
This was missing; the code to parse these numbers was there,
but the switch didn't have cases for these types.

https://bugzilla.gnome.org/show_bug.cgi?id=602443

gtk/gtkbuilder.c

index 1be1589af5c3bef1f5652fbbcd6944daa6dd8eac..c6f5795dc50b10e5c494e30dee01108d2fc54a19 100644 (file)
@@ -1869,9 +1869,11 @@ gtk_builder_value_from_string_type (GtkBuilder   *builder,
       }
     case G_TYPE_INT:
     case G_TYPE_LONG:
+    case G_TYPE_INT64:
       {
-        long l;
+        gint64 l;
         gchar *endptr = NULL;
+
         errno = 0;
         l = g_ascii_strtoll (string, &endptr, 0);
         if (errno || endptr == string)
@@ -1886,14 +1888,17 @@ gtk_builder_value_from_string_type (GtkBuilder   *builder,
           }
         if (G_VALUE_HOLDS_INT (value))
           g_value_set_int (value, l);
-        else
+        else if (G_VALUE_HOLDS_LONG (value))
           g_value_set_long (value, l);
+        else
+          g_value_set_int64 (value, l);
         break;
       }
     case G_TYPE_UINT:
     case G_TYPE_ULONG:
+    case G_TYPE_UINT64:
       {
-        gulong ul;
+        guint64 ul;
         gchar *endptr = NULL;
         errno = 0;
         ul = g_ascii_strtoull (string, &endptr, 0);
@@ -1909,8 +1914,10 @@ gtk_builder_value_from_string_type (GtkBuilder   *builder,
           }
         if (G_VALUE_HOLDS_UINT (value))
           g_value_set_uint (value, ul);
-        else 
+        else if (G_VALUE_HOLDS_ULONG (value))
           g_value_set_ulong (value, ul);
+        else 
+          g_value_set_uint64 (value, ul);
         break;
       }
     case G_TYPE_ENUM: